package com.itheima.pojo;

/**
 * 后端提供给前端接口 结果多种多样，每个接口都会有自己携带的数据
 * 如果每一个接口都按照自己方式返回数据
 * 整个接口杂乱无章，维护起来麻烦。
 * 引入统一结果响应，解决这一问题
 *
 *
 *
 * 统一结果响应类
 * ①响应码：告知前端本次请求是否成功
 * ②描述：对我们的响应码进一步解释
 * ③数据：本次请求携带的数据，使用泛型
 */
public class Result<T> {

    /**
     * 响应码：规定 1成功 0或其他  失败   （由公司内部规定）
     */
    private Integer code;
    /**
     * 响应码描述：信息描述
     */
    private String msg;
    /**
     * 数据
     */
    private T data;

    /**
     *
     *  构造私有化
     *
     * @param code 接口
     * @param data 数据
     */
    private Result(Code code, T data) {
        this.code = code.getCode();
        this.msg = code.getMsg();
        this.data = data;
    }

    public static <T>Result<T> success(T data){
        return new Result<T>(CommonCodeEnum.SUCCESS,data);
    }

    public static <T>Result<T> err(T data){
        return new Result<T>(CommonCodeEnum.ERROR,null);
    }
}
